﻿using RndMaterialDisposalService.Models.Entitys;
using RndMaterialDisposalService.Models.RequestModel;

namespace RndMaterialDisposalService.Services.Interface.VehicleDispatch
{
    /// <summary>
    /// 
    /// </summary>
    public interface ICarConfigurationService
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="carConfiguration"></param>
        /// <returns></returns>
        Task<int> AddCarConfiguration(CarConfigurationDto carConfiguration);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="carConfiguration"></param>
        /// <returns></returns>
        Task<int> UpdateCarConfiguration(CarConfigurationDto carConfiguration);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sysId"></param>
        /// <returns></returns>
        Task<int> DeleteCarConfiguration(Guid sysId);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="carManageReq"></param>
        /// <returns></returns>
        Task<(List<CarConfigurationDto> list, int count)> GetCarConfigurationList(CarManagementReq carManageReq);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="keyword"></param>
        /// <param name="PageIndex"></param>
        /// <param name="PageSize"></param>
        /// <returns></returns>
        Task<(List<CarConfigurationDto> list, int count)> GetCarListByKeyword(string keyword, int PageIndex, int PageSize);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="driverConfiguration"></param>
        /// <returns></returns>
        Task<int> AddDriverConfiguration(DriverConfigurationDto driverConfiguration);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="driverConfiguration"></param>
        /// <returns></returns>
        Task<int> UpdateDriverConfiguration(DriverConfigurationDto driverConfiguration);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sysId"></param>
        /// <returns></returns>
        Task<int> DeleteDriverConfiguration(Guid sysId);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="PageIndex"></param>
        /// <param name="PageSize"></param>
        /// <returns></returns>
        Task<(List<DriverConfigurationDto> list, int count)> GetDriverConfigurationList(string userName, int PageIndex, int PageSize);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="keyword"></param>
        /// <param name="PageIndex"></param>
        /// <param name="PageSize"></param>
        /// <returns></returns>
        Task<(List<DriverConfigurationDto> list, int count)> GetDriverListByKeyword(string keyword, int PageIndex, int PageSize);
    }
}
